Technical Q&As

TX12 - IsCmdChar (98 îN 7 åé 6 ì˙)

Q Script.h Ç…éüÇÃêÈåæÇ™Ç†ÇËÇ‹Ç∑ÅB

extern PASCAL Boolean IsCmdChar(const EventRecord *eventRecord, short test)
FOURWORDINLINE(0x2F3C, 0x8206, 0xFFD0, 0xA8B5);

DZÇÃä÷êîÇÃê‡ñæÇä‹ÇfiÉhÉLÉÖÉÅÉìÉgÇå©Ç¬ÇØÇÈDZÇΔÇ™Ç≈Ç´Ç‹ÇπÇÒÅBǪÇÃÇÊǧǻÉhÉLÉÖÉÅÉìÉgÇÕdžÇËÇ‹Ç∑Ç©ÅBLJǵéÑÇ™çlǶǃǢÇÈÇÊǧDžìÆçÏÇ∑ÇÈä÷êîÇ»ÇÁÇ∫Ç–égÇ¢ÇΩÇ¢ÇÃÇ≈Ç∑Ç™ÅB

A Ç≤éwìEdžÇËÇ™ÇΔǧÇ≤ǥǢNjǵÇΩÅBDZÇÃÉãÅ[É`ÉìÇÕ System 7 Ç≈ì±ì¸Ç≥ÇÍÇΩLJÇÃÇ≈Ç∑ÅBDZDZÇ≈ÉãÅ[É`ÉìÇÃê‡ñæÇÇ¢ÇΩǵNjÇ∑ÅB

FUNCTION IsCmdChar(keyEvent: EventRecord; testChar: INTEGER):
BOOLEAN;

DZÇÃä÷êîÇÕÅAëºÇÃÉLÅ[ÇΔëgÇ›çáÇÌÇπǃ command ÉLÅ[Ç™âüÇ≥ÇÍÇΩǩǫǧǩÇÉeÉXÉgÇ∑ÇÈLJÇÃÇ≈Ç∑ÅBcommand ÉLÅ[ÇâüÇ∑/ó£Ç∑ëÄçÏÇ‚ shift ÉLÅ[ÇâüÇ∑/ó£Ç∑ëÄçÏÇΔëgÇ›çáÇÌÇπÇΩÇΔÇ´Ç…ÅAtestChar Ç™ê∂ê¨Ç≥ÇÍÇ‹Ç∑ÅBtestChar Ç…ÉVÉtÉgï∂éöÇ™éwíËÇ≥ÇÍÇÈDZÇΔǙdžÇÈÉàÅ[ÉçÉbÉpÇÃÉLÅ[É{Å[ÉhÇ‚ÅAcommand ÉLÅ[ÇΔìØéûÇ≈Ç»ÇØÇÍÇŒê∂ê¨Ç≥ÇÍǻǢ testChar ǙdžÇÈîÒÉçÅ[É}ÉìÉLÅ[É{Å[ÉhDžLJëŒâûǵNjÇ∑ÅBç≈LJï÷óòÇ»égÇ¢ï˚ÇÕ command ÉLÅ[ÇΔÉsÉäÉIÉh (.) ÇÃëgÇ›çáÇÌÇπÇÃÉeÉXÉgÇ≈Ç∑Ç™ÅAcommand ÉLÅ[ÇΔdžÇÁljÇÈï∂éöÇÃëgÇ›çáÇÌÇπÇÉeÉXÉgÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

åƒÇ—èoǵë§ÇÕ command ÉLÅ[Ç™âüÇ≥ÇÍÇΩèÛë‘Ç≈ìæÇÁÇÍÇΩÉLÅ[ÇÃâüâ∫Ç‹ÇΩÇÕÉäÉsÅ[ÉgÉLÅ[ÇÃÉCÉxÉìÉgÉåÉRÅ[ÉhÇìnǵNjÇ∑ÅBÉeÉXÉgëŒè€ÇÃï∂éö (ó·Ç¶ÇŒÅu.Åv) LJìnǵNjÇ∑ÅBä÷êîÇÕåªç›ÇÃèCè¸ÉLÅ[Ç≈ testChar Ç™ê∂ê¨Ç≥ÇÍÇÈèÍçáÇÕê^Çï‘ǵNjÇ∑ÅBÇ‹ÇΩÅAåªç›ÇÃèCè¸ÉLÅ[ÉrÉbÉgÇ…ëŒÇµÇƒéüÇÃÇ¢Ç∏ÇÍǩNjÇΩÇÕóºï˚ÇÃïœçXÇâ¡Ç¶ÇΩåãâ  testChar Ç™ê∂ê¨Ç≥ÇÍÇÈèÍçáLJê^Çï‘ǵNjÇ∑ÅB

à»â∫ÇÕÅADZÇÃä÷êîÇÃégÇ¢ï˚ÇÃÉTÉìÉvÉãÇ≈Ç∑ÅB

OSErr HandleKeys (EventRecord *eventPtr) {
     OSErr     err      = noErr;
Å@
if (eventPtr->modifiers & cmdKey) {
     if (IsCmdChar (eventPtr, '.')) {
         gStop = true;
     } else {
         err = DispatchMenuChoice (MenuKey (eventPtr->message & charCodeMask));
     }
   }
Å@
   return err;
}

íçà”: IsCmdChar ä÷êîÇ™ true ÇΔǵǃï‘Ç∑ílÇÕ 0xFF Ç≈Ç∑ÅBǬNjÇËÅAIsCmdChar ÇÕ 1 Çï‘Ç≥ǻǢÇÃÇ≈ÅA0xFF Çï‘Ç≥ÇÍǃLJÉRÅ[ÉhÇ™ê≥ǵÇ≠ìÆçÏÇ∑ÇÈÇÊǧDžǵǃÇ≠ÇæÇ≥Ç¢ÅBäJî≠ä¬ã´ÇÃÅutrueÅvÇÃíËã`Ç™ 0xFF Ç≈džÇÈDZÇΔÇ™ÇÌǩǡǃǢÇÈèÍçáà»äOÇÕÅAǪÇÃíËã`ÇǪÇÃNjNjégǡǃÇÕÇ¢ÇØÇ‹ÇπÇÒÅBMacTypes.h Ç≈ÇÕ true ÇÕ 1 Ç…íËã`Ç≥ÇÍǃǢNjÇ∑ÅBDZÇÃèÍçáèÌÇ…åãâ ÇÕãUDžǻǡǃǵNjǢNjÇ∑ÅB


-- Mark Cookson
Worldwide Developer Technical Support

Technical Q&As

To send feedback, please use the Feedback page.